package com.cskaoyan.service.wx;

import com.cskaoyan.bean.WxCaptcha;

import java.time.LocalDateTime;
import java.util.HashMap;

/**
 * @ClassName CaptchaManagerService
 * @Description TODO 缓存系统中的验证码 → 添加到缓存 → 获取缓存中的验证码
 * @Author by Lester
 * @Date 2022/11/23 14:49
 * @Version 1.0
 */
public class CaptchaManagerService {

    private static HashMap<String, WxCaptcha> captchaCodeCache = new HashMap<>();

    /**
     * 添加到缓存
     *
     * @param mobile 电话号码
     * @param code   验证码
     * @return
     */
    public static boolean addToCache(String mobile, String code) {

        // 发送验证码但是没有过期
        if (captchaCodeCache.get(mobile) != null) {
            if (captchaCodeCache.get(mobile).getExpireTime().isAfter(LocalDateTime.now())) {
                return false;
            } else {
                // 验证码存在，但是已经过期，删掉
                captchaCodeCache.remove(mobile);
            }
        }
        WxCaptcha wxCaptcha = new WxCaptcha();
        wxCaptcha.setMobile(mobile);
        wxCaptcha.setCode(code);
        // 有效期为1分钟
        wxCaptcha.setExpireTime(LocalDateTime.now().plusMinutes(1));
        captchaCodeCache.put(mobile, wxCaptcha);
        return true;
    }

    /**
     * 获取缓存中的验证码
     *
     * @param mobile 关联的手机号
     * @return
     */
    public static String getCachedCaptcha(String mobile) {
        // 没有这个电话的记录
        if (captchaCodeCache.get(mobile) == null) {
            // return captchaCodeCache.get(mobile).getCode();
            return null;
        }
        if (captchaCodeCache.get(mobile).getExpireTime().isBefore(LocalDateTime.now())) {
            return null;
        }
        return captchaCodeCache.get(mobile).getCode();
    }
}
